﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using radnaVerzija.Interfejsi;
using MySql.Data.MySqlClient;

namespace radnaVerzija
{
    partial class DAL
    {
        public class PrijavaDAO : IDaoCrud<Prijava>
        {
            protected MySqlCommand komanda;

            public long create(Prijava entitet)
            {
                try
                {
                    komanda = new MySqlCommand("insert into Prijave values (ToDate(@vrijeme, DD.M.YYYY), @opis, @vrsta);", konekcija);
                    komanda.Parameters.AddWithValue("@vrijeme", entitet.Vrijeme.ToShortDateString());
                    komanda.Parameters.AddWithValue("@opis", entitet.Opis);
                    komanda.Parameters.AddWithValue("@vrsta", entitet.Vrsta);
                    komanda.ExecuteNonQuery();
                    return komanda.LastInsertedId;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Prijava read(Prijava entitet)
            {
                try
                {
                    komanda = new MySqlCommand("select * from Prijave where idPrijave = @id;", konekcija);
                    komanda.Parameters.AddWithValue("@id", entitet.IdPrijave);
                    MySqlDataReader citac = komanda.ExecuteReader();
                    Prijava prijava = null;
                    citac.Read();
                    prijava = new Prijava(citac.GetDateTime("vrijeme"),
                                        citac.GetString("opis"),
                                        citac.GetInt32("vrsta"),
                                        entitet.IdPrijave);
                    citac.Close();
                    return prijava;
                }
                catch (Exception ex)
                {
                    throw ex;
                }

            }

            public Prijava update(Prijava entitet)
            {
                try
                {
                    komanda = new MySqlCommand("update Prijave set vrijeme = ToDate(@vrijeme, DD.MM.YYYY), vrsta = @vrsta, opis = @opis where idPrijave = @id;", konekcija);
                    komanda.Parameters.AddWithValue("@vrijeme", entitet.Vrijeme.ToShortDateString());
                    komanda.Parameters.AddWithValue("@opis", entitet.Opis);
                    komanda.Parameters.AddWithValue("@vrsta", entitet.Vrsta);
                    komanda.Parameters.AddWithValue("id", entitet.IdPrijave);
                    komanda.ExecuteNonQuery();
                    return read(entitet);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            public void delete(Prijava entitet)
            {
                try
                {
                    komanda = new MySqlCommand("delete from Prijave where idPrijave = @id;", konekcija);
                    komanda.Parameters.AddWithValue("@id", entitet.IdPrijave);
                    komanda.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

        }
    }
}
